package cn.csc.module.order.api.item.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;

/**
 * 订单子项DTO
 *
 */
@Data
public class OrderItemRespDTO {

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    private BigInteger id;

    /**
     * 店铺id
     */
    @ApiModelProperty(value = "店铺id", required = true)
    @NotNull(message = "店铺id不能为空")
    private BigInteger shopId;

    /**
     * 店铺名称
     */
    @ApiModelProperty(value = "店铺名称，冗余字段", required = true)
    private String shopName;

    /**
     * 第三方用户id
     */
    @ApiModelProperty(value = "第三方用户id" )
    private String appUserId;

    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id", required = true)
    @NotNull(message = "订单id不能为空")
    private BigInteger orderId;

    /**
     * 分类id
     */
    @ApiModelProperty(value = "分类id")
    private String categoryId;

    /**
     * 产品ID
     */
    @ApiModelProperty(value = "产品ID", required = true)
    @NotNull(message = "产品ID不能为空")
    private BigInteger spuId;

    /**
     * 产品SkuID
     */
    @ApiModelProperty(value = "产品SkuID", required = true)
    @NotNull(message = "产品SkuID不能为空")
    private BigInteger skuId;

    /**
     * 用户Id
     */
    @ApiModelProperty(value = "用户Id", required = true)
    @NotNull(message = "用户Id不能为空")
    private BigInteger userId;

    /**
     * 购物车产品个数
     */
    @ApiModelProperty(value = "购物车产品个数")
    private Integer count;

    /**
     * 产品名称
     */
    @ApiModelProperty(value = "产品名称")
    private String spuName;

    /**
     * sku名称
     */
    @ApiModelProperty(value = "sku名称")
    private String skuName;
    /**
     * 产品主图片路径
     */
    @ApiModelProperty(value = "产品主图片路径")
    private String pic;

    /**
     * 配送类型3：无需快递
     */
    @ApiModelProperty(value = "单个orderItem的配送类型1.快递物流(默认）,2.送货上门,3.自提")
    private Integer deliveryType;

    /**
     * 运费备注
     */
    @ApiModelProperty(value = "运费备注")
    private String freightRemark;

    /**
     * 产品价格
     */
    @ApiModelProperty(value = "产品价格", required = true)
    private BigDecimal price;

    /**
     * 商品总金额
     */
    @ApiModelProperty(value = "商品总金额", required = true)
    private BigDecimal spuTotalAmount;

    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态", required = true)
    private Integer orderStatus;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间", required = true)
    private LocalDateTime payTime;

    /**
     * 支付类型
     */
    @ApiModelProperty(value = "支付类型，0微信支付、1购物卡支付、2结合支付")
    private Integer payType;

    /**
     * 实付金额
     */
    @ApiModelProperty(value = "实付金额")
    private BigDecimal spuActualAmount;

    /**
     * 购物卡支付金额
     */
    @ApiModelProperty(value = "购物卡支付金额")
    private BigDecimal cardPayAmount;

    /**
     * 客户手机号
     */
    @ApiModelProperty(value = "客户手机号")
    private String memberPhone;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", required = true)
    private LocalDateTime createTime;

    @ApiModelProperty(value = "订单类型 0普通订单，1采购商订单")
    private Integer orderType;


}
